package com.zerui.manager.deviceTouch.gateway;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zerui.manager.deviceTouch.DeviceTouch;
import com.zerui.manager.deviceTouchSync.DeviceTouchSync;
import com.zerui.manager.web.cmd.DeviceTouchQryCmd;
import com.zerui.manager.web.vo.DeviceTouchPageVO;
import com.zerui.manager.web.vo.feign.DeviceInfoFeignVO;

import java.util.List;

/**
 * 设备网关接口
 *
 * @author pyzhang
 * @since 2024-04-11
 */
public interface DeviceTouchGateWay {

    List<DeviceTouch> selectTouchDevicesByFrom(Integer deviceFrom);

    /**
     * 分页查询落地设备信息
     *
     * @param deviceTouchQryCmd
     * @return
     */
    Page<DeviceTouch> getPageList(DeviceTouchQryCmd deviceTouchQryCmd);

    /**
     * 分页查询落地设备信息
     *
     * @param deviceTouchQryCmd
     * @return
     */
    Page<DeviceTouchPageVO> getPageList2(DeviceTouchQryCmd deviceTouchQryCmd);

    /**
     * 调用接口启动线程执行-手动落地设备信息
     *
     * @param addDevices    新增设备
     * @param updateDevices 更新设备
     * @param deleteDevices 删除设备
     */
    void handTouchDevices(List<DeviceTouch> addDevices, List<DeviceTouch> updateDevices, List<DeviceTouch> deleteDevices, DeviceTouchSync touchSync);

    /***
     * 定时任务 - 自动落地设备信息
     * @param addDevices    新增设备
     * @param updateDevices 更新设备
     * @param deleteDevices 删除设备
     */
    void autoTouchDevices(List<DeviceTouch> addDevices, List<DeviceTouch> updateDevices, List<DeviceTouch> deleteDevices);

    /**
     * 获取指定条件的设备信息列表
     *
     * @param qryCmd
     * @return
     */
    List<DeviceInfoFeignVO> getAccessControlDeviceList(DeviceTouchQryCmd qryCmd);


    /**
     * 通过设备编号查询设备信息
     *
     * @param deviceCode 设备编号
     * @return
     */
    DeviceTouchPageVO getDeviceByDeviceCode(String deviceCode);
}